Applications are executed on devices. Applications may use significant resources during execution. Resources may be more optimally managed by distributing an application among many devices. Distributing applications among many devices may require developing a version of the application for each of the devices to facilitate executing parts of the application on different devices. Furthermore, it may be difficult to divide the application into components and execute the components as if all are on the same device.